#ifndef IMAGEMODEL_H
#define IMAGEMODEL_H

#include <QAbstractItemModel>
/**
 *
 * @author Василий Почкаенко
 */
class ImageModel : public QAbstractItemModel{
Q_OBJECT
public:
	explicit ImageModel(QObject *parent = 0);

	/** Используется другими компонентами для получения информации о каждом элементе, предоставляемом моделью.*/
	virtual Qt::ItemFlags flags( const QModelIndex & index ) const;

	/** Снабжает представления и делегаты данными элементов.*/
	virtual QVariant data( const QModelIndex & index, int role = Qt::DisplayRole ) const;

	/** Предоставляется представлениям с информацией для показа в их заголовках..*/
	virtual QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const;

	/** Количество строк данных, доступных в модели.*/
	virtual int rowCount( const QModelIndex & parent = QModelIndex() ) const;

	/** Количество столбцов данных, доступных в модели.*/
	virtual int columnCount( const QModelIndex & parent = QModelIndex() ) const;

	/** Изменяет данные элемента	, связанного с заданным модельным индексом.*/
	virtual bool setData( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole );

	/** Изменяет информацию в горизонтальном и вертикальном заголовках.*/
	virtual bool setHeaderData( int section, Qt::Orientation orientation, const QVariant & value, int role = Qt::EditRole );

	/** Добавляет новые строки.*/
	virtual bool insertRows( int row, int count, const QModelIndex & parent = QModelIndex() );

	/** Добавляет новую строку.*/
	virtual bool insertRow( int row, const QModelIndex & parent = QModelIndex() );

	/** Удаляет строки.*/
	virtual bool removeRows( int row, int count, const QModelIndex & parent = QModelIndex() );

	/** Удаляет строку.*/
	virtual bool removeRow( int row, const QModelIndex & parent = QModelIndex() );

	/** Добавляет новые столбцы.*/
	virtual bool insertColumns( int row, int count, const QModelIndex & parent = QModelIndex() );

	/** Добавляет новый столбец.*/
	virtual bool insertColumn( int row, const QModelIndex & parent = QModelIndex() );

	/** Удаляет столбцы.*/
	virtual bool removeColumns( int row, int count, const QModelIndex & parent = QModelIndex() );

	/** Удаляет столбец.*/
	virtual bool removeColumn( int row, const QModelIndex & parent = QModelIndex() );

	/** Получая модельный индекс родительского элемента, эта функция позволяет представлениям и делегатам обращаться к дочерним элементам этого элемента.*/
	virtual QModelIndex index( int row, int column, const QModelIndex & parent = QModelIndex() ) const;

	/** Возвращает модельный индекс, соответствующий родителю какого-либо дочернего элемента..*/
	QModelIndex parent( const QModelIndex & index ) const;
signals:

public slots:

};

#endif // IMAGEMODEL_H
